{
ExpressionInfo *info;
const char *property_name;
- const char *type_name;
+ const char *type_name = NULL;
GType type;
if (!check_expression_parent (data))
}
if (!g_markup_collect_attributes (element_name, names, values, error,
- G_MARKUP_COLLECT_STRING, "type", &type_name,
+ G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "type", &type_name,
G_MARKUP_COLLECT_STRING, "name", &property_name,
G_MARKUP_COLLECT_INVALID))
{
return;
}
- type = gtk_builder_get_type_from_name (data->builder, type_name);
- if (type == G_TYPE_INVALID)
+ if (type_name == NULL)
{
- g_set_error (error,
- GTK_BUILDER_ERROR,
- GTK_BUILDER_ERROR_INVALID_VALUE,
- "Invalid type '%s'", type_name);
- _gtk_builder_prefix_error (data->builder, &data->ctx, error);
- return;
+ type = G_TYPE_INVALID;
+ }
+ else
+ {
+ type = gtk_builder_get_type_from_name (data->builder, type_name);
+ if (type == G_TYPE_INVALID)
+ {
+ g_set_error (error,
+ GTK_BUILDER_ERROR,
+ GTK_BUILDER_ERROR_INVALID_VALUE,
+ "Invalid type '%s'", type_name);
+ _gtk_builder_prefix_error (data->builder, &data->ctx, error);
+ return;
+ }
}
info = g_slice_new0 (ExpressionInfo);